package com.example.demo.leetcode.top;

/**
 * @author xujimou
 * @version 2.0
 * @Description
 * 给你 n 个非负整数 a1，a2，...，an，每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/container-with-most-water
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @date 2022/1/27 10:32
 */
public class Array_盛水的容器 {

    public static int maxArea(int[] height) {

        int maxCubic = 0;
        for(int i =0;i<height.length;i++){
            for(int j=height.length-1;j>i;j--){
                int temph = Math.min(height[i],height[j]);
                int tempCubic = temph * (j-i);
                maxCubic = Math.max(tempCubic,maxCubic);

            }

        }
        return maxCubic;
    }


    //优化 每次移動短板即可， 因为移动长板面积必定会变小
    public static int maxArea2(int[] height) {

        int maxCubic = 0;
        for(int i =0;i<height.length;i++){
            for(int j=height.length-1;j>i;j--){
                int temph = Math.min(height[i],height[j]);
                int tempCubic = temph * (j-i);
                maxCubic = Math.max(tempCubic,maxCubic);
                if(height[j] > height[i]){
                    break;
                }
            }
        }
        return maxCubic;

    }



    public static void main(String[] args) {

        int [] arr = {1,8,6,2,5,4,8,3,7};
        int i = maxArea(arr);
        System.out.println(i);
    }


}
